﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using SForceOTService;
using DataLayer.dbml;
using DataLayer.Controller;


public partial class provider_UploadActa : cGlobal
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.hdnOTSDFC.Value = Request.QueryString["OT"].ToString();
        this.hdnOTName.Value = Request.QueryString["name"].ToString();
    }

    private bool Validar()
    {
        string mensaje = "";

        if (this.fileActa.HasFile)
        {
            string extension = Path.GetExtension(this.fileActa.FileName);
            if ((!extension.EndsWith(".rar")) && ((!extension.EndsWith(".zip"))))
                mensaje += "La extensión del archivo es inválida";
        }
        else
        {
            mensaje += "Debe seleccionar un archivo";
        }

        if (mensaje.Length > 0)
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se puede guardar el acta: " + mensaje + "'); </Script>");
            return false;
        }
        else
            return true;

    }

    protected void btnLoad_Click(object sender, ImageClickEventArgs e)
    {
        if (this.Validar())
        {
            try
            {
                //Se guarda el archivo
                string extension = Path.GetExtension(this.fileActa.FileName);
                string path = Server.MapPath("../actas");
                this.fileActa.SaveAs(Path.Combine(path, this.hdnOTName.Value.ToString() + extension));

                //Se actualiza la OT
                //SFAuthentication();

                DataLayer.SForceOTService.ActualizarOrdenDeTrabajoParametros OTParameter = new DataLayer.SForceOTService.ActualizarOrdenDeTrabajoParametros();
                OTParameter.strComentario = this.txtComentario.Text.Trim();
                OTParameter.strEstado = "Cerrado";
                OTParameter.dateFechaCierre = DateTime.Now.ToString("dd/MM/yyyy");
                OTParameter.nombreDeOrdenesDeTrabajo = this.hdnOTName.Value.ToString();

                //ActualizarOrdenDeTrabajoRespuesta result = OTService.actualizarOrdenDeTrabajo(OTParameter);
                DataLayer.SForceOTService.ActualizarOrdenDeTrabajoRespuesta result = SFController.ActualizarOT(OTParameter);

                //Se actualiza la OT en las tablas del portal
                if (result.strEstadoTransaccion.Equals("Fallida"))
                    this.lblMensaje.Text = "No se cerró la orden de trabajo: " + result.strObservaciones;
                else
                {
                    OTController.CloseOT(this.hdnOTSDFC.Value.ToString(), this.txtComentario.Text.Trim());
                    this.lblMensaje.Text = "La orden de trabajo ha sido cerrada";
                }

                //Registra log de transacciones
                LOG_TRANSACCION objLog = new LOG_TRANSACCION();
                objLog.TIPO_TRANSACCION = result.strTipoTransaccion;
                objLog.ELEMENTO_ENVIADO = DataLayer.Utilities.Utilidades.Serializar(OTParameter);                
                objLog.ESTADO = result.strEstadoTransaccion;
                objLog.OBSERVACION = result.strObservaciones;
                objLog.ENVIOS = 1;
                LogTransactionController.Insert(objLog);
            }
            catch (Exception ex)
            {
                this.lblMensaje.Text = "Ocurrió un error: " + ex.Message;
            }
        }        

    }

    protected void btnCerrarCaso_Click(object sender, ImageClickEventArgs e)
    {

    }
}
